//
//  WelcomeViewViewController.swift
//  sinaWeibo
//
//  Created by 浅爱 on 16/3/17.
//  Copyright © 2016年 y. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage

/*
    自动布局的页面在执行动画效果时需要注意
    1.需要在ViewDidAppear方法中执行动画效果的代码
    2.在自动布局的页面，不能够直接修改frame 来改变视图的位置 -> 自动布局的页面 是有frame的
    2.1自动布局的页面的子视图的frame 在viewDidLayoutSubViews 方法中确定
    3.自动布局系统会在 viewWillLayoutSubViews 生命周期方法之前 收集  约束
    4.如果希望更新的约束能够提前展示动画效果的运行轨迹，需要在更新完约束之后，强制刷新动画，提前布局页面
    5.必须将 提前刷新的方法 放在动画闭包中执行
*/

class WelcomeViewController: UIViewController {

    
    override func loadView() {
        
        // 大小自动设置
        view = backImageView
        
    }

    override func viewDidLoad() {
    
        super.viewDidLoad()
        
        setupUI()
    
    }
    
    // 设置UI
    private func setupUI() {
    
        // 添加子视图
        view.addSubview(iconImageView)
        
        view.addSubview(lb_welcome)
    
        // 自动布局
        iconImageView.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(view.snp_centerX)
            
            make.bottom.equalTo(view.snp_bottom).offset(-180)
            
            // 大小的约束  z在SnapKit的某一些版本上直接设置大小  没哟任何效果  建议 在这个地方试一下是否设置上  如果没有  就分开设置宽和高的约束
            make.height.equalTo(90)
            
            make.width.equalTo(90)
            
        }
        
        lb_welcome.snp_makeConstraints { (make) -> Void in
            
            make.top.equalTo(iconImageView.snp_bottom).offset(14)
            
            make.centerX.equalTo(iconImageView.snp_centerX)
        
        }
        
        
        // 设置图片
        iconImageView.sd_setImageWithURL(userAccount.sharedAccount.headImageUrl)

        // 图片圆角
        iconImageView.layer.cornerRadius = 45
        
        iconImageView.layer.masksToBounds = true
        
        iconImageView.layer.borderWidth = 1.4
        
        iconImageView.layer.borderColor = UIColor.purpleColor().CGColor
        
        lb_welcome.alpha = 0
        
    }
    
    
    // 界面已经出现的时候自动调用
    override func viewDidAppear(animated: Bool) {
        
        super.viewDidAppear(true)
        
        startAnimation()
        
    }
    
    // 头像弹出的动画效果
    private func startAnimation() {
    
        // 在动画闭包中 更新约束 snp_updateConstranints：如果该约束已经存在就更新，  否则创建约束
        let offsetY = -UIScreen.mainScreen().bounds.height + 180
        
        // usingSpringWithDamping:弹簧系数 0~1 越小越弹
        // initialSpringVelocity: 加速度  9.8 重力加速度 如果希望弹簧效果好  一般设置范围  弹簧系数 * 10 ~= 加速度
        // options 动画的可选项  枚举 位移枚举  '|'  在swift中 用数组表示多个枚举选项
        UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.98, initialSpringVelocity: 9.8, options: [], animations: { () -> Void in

            // 自动布局系统在这个时候并没有修改控件的frame  只是收集了控件的 约束 变化
            self.iconImageView.snp_updateConstraints(closure: { (make) -> Void in
                
                make.bottom.equalTo(self.view.snp_bottom).offset(offsetY)
                
            })
         
            // 强制刷新,必须在动画闭包中执行
            self.view.layoutIfNeeded()
            
            }) { (_) -> Void in
                
                UIView.animateWithDuration(0.5, animations: { () -> Void in
                    
                    self.lb_welcome.alpha = 1
                    
                    }, completion: { (_) -> Void in
                        
                        // 求换根视图控制器 （rootViewController广告页面，新特性页面，页面多了不好管理）
                        NSNotificationCenter.defaultCenter().postNotificationName(switchRootViewController, object: nil)
                        
                })
                
        }
        
    }
    
    
    // MARK: 懒加载子视图
    // 背景图片
    private lazy var backImageView = UIImageView(image: UIImage(named: "ad_background"))
    
    // 头像
    private lazy var iconImageView = UIImageView(image: UIImage(named: "avatar_default_big"))

    // 欢迎语
    private lazy var lb_welcome: UILabel = UIFactory.labelWith((userAccount.sharedAccount.name ?? "") + "  欢迎归来", textColor: UIColor.darkGrayColor(), fontOfSize: 14)
       
}






